package drds.binlog.parse;

import drds.binlog.binlog_event.LogByteBlock;
import drds.binlog.binlog_event.LogEvent;
import drds.binlog.common.Authors;
import drds.binlog.common.LifeCycle;
import drds.common.Author;

/**
 * 针对解析器提供一个多阶段协同的处理
 * <p>
 * <pre>
 * 1. 网络接收 (单线程)
 * 2. 事件基本解析 (单线程，事件类型、DDL解析构造TableMeta、维护位点信息)
 * 3. 事件深度解析 (多线程, DML事件数据的完整解析)
 * 4. 投递到store (单线程)
 * </pre>
 */
@Author(name = Authors.LI_YANG)
public interface IMultiStageCoprocessor extends LifeCycle
{

    /**
     * 网络数据投递
     */
    public boolean publish(LogByteBlock logByteBlock);

    public boolean publish(LogEvent logEvent);

    public void reset();
}
